<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h1>商品列表</h1>
  <table border="1">
    <tr>
      <th align="center">商品id</th>
      <th align="center">商品标题</th>
      <th align="center">商品价格</th>
      <th align="center">商品销量</th>
      <th align="center" colspan="2">操作</th>
    </tr>
    <tr v-for="p in arr">
      <td align="center">{{p.id}}</td>
      <td align="center">{{p.title}}</td>
      <td align="center">{{p.price}}</td>
      <td align="center">{{p.saleCount}}</td>
      <!-- javascript:void(0) 废掉超链接跳转功能 -->
      <td align="center"><a href="javascript:void(0)" @click="del(p.id)">删除</a></td>
      <td align="center"><a :href="'/update.html?id='+p.id" >修改</a></td>
    </tr>
    <tr><td colspan="6" align="center"><input type="button" value="返回首页" @click="back()"></td></tr>
  </table>

<script src="js/vue.js"></script>
<script src="js/axios.min.js"></script>
<script>
  let v = new Vue({
    el:"table",
    data:{
      arr:[]
    },
    created(){
      // 此方法是Vue对象创建时执行的方法,一般会把加载完页面请求数据的代码 写在此方法中
      // 发出异步请求获取数据.
      axios.get("/select").then(function (response){
        //服务器返回的数据直接给到add数组, 由于页面和数组进行了绑定
        //数组值发生改变时页面会自动发生改变.

        /*
         服务器传递过来的是二进制的数据 Axios 框架会先将二进制的数据转回 JSON 格式的字符串,
         转换完成字符串之后,会再将 JSON 格式的字符串转换成数组或对象!
         JSON 是一种轻量级的数据交换格式 ( 数据封装格式 )
         客户端和服务端之间需要互相传输数据, 当需要传输复杂数据时, 需要按照特定的格式将数据封装
         JSON 就是这样一个通用格式!
         */
        /*
          服务器使用 Spring框架 将 List 集合转换为 JSON 字符串,通过网络传输二进制给前端页面,
          前端页面使用 Axios框架 将接收到的 JSON 字符串 转换为数组或对象进行存储
         */
        v.arr = response.data;
      })
    },
    methods:{
      back(){
        location.href="/";
      },
      del(id){
        axios.get("/delete?id="+id).then(function (){
          alert("删除完成!")
          location.reload();
        })
      }
    }
  })
</script>
</body>
</html>